#ifndef POINT_H
#define POINT_H

#include "Primitiva.h"
#include "Vector.h"

class Point : public Primitiva
{
    public:
        /// Métodos públicos: ///
        // Construtores e destrutor:
        Point():Primitiva(){}                                  ///ok!
        Point(size_t d):Primitiva(d){}                         ///ok!
        //Point(const Point& p);                               ///ok!
        Point(const char* entrada):Primitiva(entrada){}        ///ok!
        virtual ~Point(){}                                     ///ok!

        // Nome e abreviatura da classe:
        virtual const char* get_nome() const                   ///ok!
        { return("Point."); }
        virtual const char* get_abreviatura() const            ///ok!
        { return("p"); }

        /// Operações do ponto ///
        // Converte o ponto para um vetor:
        Vector paraVector() const;

        // Soma entre dois pontos:
        Point operator+(const Point& p) const;                 ///ok!

        // Subtração entre dois pontos:
        Vector operator-(const Point& p) const;                ///ok!

        // Soma de vetor com ponto:
        Point operator+(const Vector& v) const;                ///ok!
};

#endif // POINT_H
